package mx.gob.imss.reiman.clientes.model;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

/**
 * 
 * @author Alberto Dzul Calvillo
 * @version 1.0
 * 
 */
public class HistorialClinico implements Serializable {
	private static final long serialVersionUID = 1L;
	private String fechaAtencion;
	private String cveIdee;
	private String indResultadoExploracionFisica;
	private String refResultadoExploracionFisica;
	private String cveTipoDonacion;
	private String cveMatricula;
	private String apellidoPaterno;
	private String apellidoMaterno;
	private String nombre;
	private String cedula;
	private String cvePresupuestal;
	private String stpTransaccion;
	private String cveTipoMensaje;
	private String cveTipoServicio;
	private String cveRFC;
	private String numeroAplicacion;
	private String numeroContrato;
	private List<Medida> medidas;
	private List<Rechazo> rechazos;
	private List<ExploracionFisica> exploraciones;

	public HistorialClinico() {
		super();
		this.fechaAtencion = "";
		this.cveIdee = "";
		this.indResultadoExploracionFisica = "";
		this.refResultadoExploracionFisica = "";
		this.cveTipoDonacion = "";
		this.cveMatricula = "";
		this.apellidoPaterno = "";
		this.apellidoMaterno = "";
		this.nombre = "";
		this.cedula = "";
		this.cvePresupuestal = "";
		this.stpTransaccion = "";
		this.cveTipoMensaje = "";
		this.cveTipoServicio = "";
		this.cveRFC = "";
		this.numeroAplicacion = "";
		this.numeroContrato = "";
		this.medidas = new ArrayList<Medida>();
		this.rechazos = new ArrayList<Rechazo>();
		this.exploraciones = new ArrayList<ExploracionFisica>();
	}

	public HistorialClinico(String fechaAtencion, String cveIdee,
			String indResultadoExploracionFisica,
			String refResultadoExploracionFisica, String cveTipoDonacion,
			String cveMatricula, String apellidoPaterno,
			String apellidoMaterno, String nombre, String cedula,
			String cvePresupuestal, String stpTransaccion,
			String cveTipoMensaje, String cveTipoServicio, String cveRFC,
			String numeroAplicacion, String numeroContrato,
			List<Medida> medidas, List<Rechazo> rechazos,
			List<ExploracionFisica> exploraciones) {
		super();
		this.fechaAtencion = fechaAtencion;
		this.cveIdee = cveIdee;
		this.indResultadoExploracionFisica = indResultadoExploracionFisica;
		this.refResultadoExploracionFisica = refResultadoExploracionFisica;
		this.cveTipoDonacion = cveTipoDonacion;
		this.cveMatricula = cveMatricula;
		this.apellidoPaterno = apellidoPaterno;
		this.apellidoMaterno = apellidoMaterno;
		this.nombre = nombre;
		this.cedula = cedula;
		this.cvePresupuestal = cvePresupuestal;
		this.stpTransaccion = stpTransaccion;
		this.cveTipoMensaje = cveTipoMensaje;
		this.cveTipoServicio = cveTipoServicio;
		this.cveRFC = cveRFC;
		this.numeroAplicacion = numeroAplicacion;
		this.numeroContrato = numeroContrato;
		this.medidas = medidas;
		this.rechazos = rechazos;
		this.exploraciones = exploraciones;
	}

	public String getFechaAtencion() {
		return fechaAtencion;
	}

	public void setFechaAtencion(String fechaAtencion) {
		this.fechaAtencion = fechaAtencion;
	}

	public String getCveIdee() {
		return cveIdee;
	}

	public void setCveIdee(String cveIdee) {
		this.cveIdee = cveIdee;
	}

	public String getIndResultadoExploracionFisica() {
		return indResultadoExploracionFisica;
	}

	public void setIndResultadoExploracionFisica(
			String indResultadoExploracionFisica) {
		this.indResultadoExploracionFisica = indResultadoExploracionFisica;
	}

	public String getRefResultadoExploracionFisica() {
		return refResultadoExploracionFisica;
	}

	public void setRefResultadoExploracionFisica(
			String refResultadoExploracionFisica) {
		this.refResultadoExploracionFisica = refResultadoExploracionFisica;
	}

	public String getCveTipoDonacion() {
		return cveTipoDonacion;
	}

	public void setCveTipoDonacion(String cveTipoDonacion) {
		this.cveTipoDonacion = cveTipoDonacion;
	}

	public String getCveMatricula() {
		return cveMatricula;
	}

	public void setCveMatricula(String cveMatricula) {
		this.cveMatricula = cveMatricula;
	}

	public String getApellidoPaterno() {
		return apellidoPaterno;
	}

	public void setApellidoPaterno(String apellidoPaterno) {
		this.apellidoPaterno = apellidoPaterno;
	}

	public String getApellidoMaterno() {
		return apellidoMaterno;
	}

	public void setApellidoMaterno(String apellidoMaterno) {
		this.apellidoMaterno = apellidoMaterno;
	}

	public String getNombre() {
		return nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	public String getCedula() {
		return cedula;
	}

	public void setCedula(String cedula) {
		this.cedula = cedula;
	}

	public String getCvePresupuestal() {
		return cvePresupuestal;
	}

	public void setCvePresupuestal(String cvePresupuestal) {
		this.cvePresupuestal = cvePresupuestal;
	}

	public String getStpTransaccion() {
		return stpTransaccion;
	}

	public void setStpTransaccion(String stpTransaccion) {
		this.stpTransaccion = stpTransaccion;
	}

	public String getCveTipoMensaje() {
		return cveTipoMensaje;
	}

	public void setCveTipoMensaje(String cveTipoMensaje) {
		this.cveTipoMensaje = cveTipoMensaje;
	}

	public String getCveTipoServicio() {
		return cveTipoServicio;
	}

	public void setCveTipoServicio(String cveTipoServicio) {
		this.cveTipoServicio = cveTipoServicio;
	}

	public String getCveRFC() {
		return cveRFC;
	}

	public void setCveRFC(String cveRFC) {
		this.cveRFC = cveRFC;
	}

	public String getNumeroAplicacion() {
		return numeroAplicacion;
	}

	public void setNumeroAplicacion(String numeroAplicacion) {
		this.numeroAplicacion = numeroAplicacion;
	}

	public String getNumeroContrato() {
		return numeroContrato;
	}

	public void setNumeroContrato(String numeroContrato) {
		this.numeroContrato = numeroContrato;
	}

	public List<Medida> getMedidas() {
		return medidas;
	}

	public void setMedidas(List<Medida> medidas) {
		this.medidas = medidas;
	}

	public List<Rechazo> getRechazos() {
		return rechazos;
	}

	public void setRechazos(List<Rechazo> rechazos) {
		this.rechazos = rechazos;
	}

	public List<ExploracionFisica> getExploraciones() {
		return exploraciones;
	}

	public void setExploraciones(List<ExploracionFisica> exploraciones) {
		this.exploraciones = exploraciones;
	}

	@Override
	public String toString() {
		return "HistorialClinico [fechaAtencion=" + fechaAtencion
				+ ", cveIdee=" + cveIdee + ", indResultadoExploracionFisica="
				+ indResultadoExploracionFisica
				+ ", refResultadoExploracionFisica="
				+ refResultadoExploracionFisica + ", cveTipoDonacion="
				+ cveTipoDonacion + ", cveMatricula=" + cveMatricula
				+ ", apellidoPaterno=" + apellidoPaterno + ", apellidoMaterno="
				+ apellidoMaterno + ", nombre=" + nombre + ", cedula=" + cedula
				+ ", cvePresupuestal=" + cvePresupuestal + ", stpTransaccion="
				+ stpTransaccion + ", cveTipoMensaje=" + cveTipoMensaje
				+ ", cveTipoServicio=" + cveTipoServicio + ", cveRFC=" + cveRFC
				+ ", numeroAplicacion=" + numeroAplicacion
				+ ", numeroContrato=" + numeroContrato + ", medidas=" + medidas
				+ ", rechazos=" + rechazos + ", exploraciones=" + exploraciones
				+ "]";
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result
				+ ((apellidoMaterno == null) ? 0 : apellidoMaterno.hashCode());
		result = prime * result
				+ ((apellidoPaterno == null) ? 0 : apellidoPaterno.hashCode());
		result = prime * result + ((cedula == null) ? 0 : cedula.hashCode());
		result = prime * result + ((cveIdee == null) ? 0 : cveIdee.hashCode());
		result = prime * result
				+ ((cveMatricula == null) ? 0 : cveMatricula.hashCode());
		result = prime * result
				+ ((cvePresupuestal == null) ? 0 : cvePresupuestal.hashCode());
		result = prime * result + ((cveRFC == null) ? 0 : cveRFC.hashCode());
		result = prime * result
				+ ((cveTipoDonacion == null) ? 0 : cveTipoDonacion.hashCode());
		result = prime * result
				+ ((cveTipoMensaje == null) ? 0 : cveTipoMensaje.hashCode());
		result = prime * result
				+ ((cveTipoServicio == null) ? 0 : cveTipoServicio.hashCode());
		result = prime * result
				+ ((exploraciones == null) ? 0 : exploraciones.hashCode());
		result = prime * result
				+ ((fechaAtencion == null) ? 0 : fechaAtencion.hashCode());
		result = prime
				* result
				+ ((indResultadoExploracionFisica == null) ? 0
						: indResultadoExploracionFisica.hashCode());
		result = prime * result + ((medidas == null) ? 0 : medidas.hashCode());
		result = prime * result + ((nombre == null) ? 0 : nombre.hashCode());
		result = prime
				* result
				+ ((numeroAplicacion == null) ? 0 : numeroAplicacion.hashCode());
		result = prime * result
				+ ((numeroContrato == null) ? 0 : numeroContrato.hashCode());
		result = prime * result
				+ ((rechazos == null) ? 0 : rechazos.hashCode());
		result = prime
				* result
				+ ((refResultadoExploracionFisica == null) ? 0
						: refResultadoExploracionFisica.hashCode());
		result = prime * result
				+ ((stpTransaccion == null) ? 0 : stpTransaccion.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj) {
			return true;
		}
		if (obj == null) {
			return false;
		}
		if (!(obj instanceof HistorialClinico)) {
			return false;
		}
		HistorialClinico other = (HistorialClinico) obj;
		if (apellidoMaterno == null) {
			if (other.apellidoMaterno != null) {
				return false;
			}
		} else if (!apellidoMaterno.equals(other.apellidoMaterno)) {
			return false;
		}
		if (apellidoPaterno == null) {
			if (other.apellidoPaterno != null) {
				return false;
			}
		} else if (!apellidoPaterno.equals(other.apellidoPaterno)) {
			return false;
		}
		if (cedula == null) {
			if (other.cedula != null) {
				return false;
			}
		} else if (!cedula.equals(other.cedula)) {
			return false;
		}
		if (cveIdee == null) {
			if (other.cveIdee != null) {
				return false;
			}
		} else if (!cveIdee.equals(other.cveIdee)) {
			return false;
		}
		if (cveMatricula == null) {
			if (other.cveMatricula != null) {
				return false;
			}
		} else if (!cveMatricula.equals(other.cveMatricula)) {
			return false;
		}
		if (cvePresupuestal == null) {
			if (other.cvePresupuestal != null) {
				return false;
			}
		} else if (!cvePresupuestal.equals(other.cvePresupuestal)) {
			return false;
		}
		if (cveRFC == null) {
			if (other.cveRFC != null) {
				return false;
			}
		} else if (!cveRFC.equals(other.cveRFC)) {
			return false;
		}
		if (cveTipoDonacion == null) {
			if (other.cveTipoDonacion != null) {
				return false;
			}
		} else if (!cveTipoDonacion.equals(other.cveTipoDonacion)) {
			return false;
		}
		if (cveTipoMensaje == null) {
			if (other.cveTipoMensaje != null) {
				return false;
			}
		} else if (!cveTipoMensaje.equals(other.cveTipoMensaje)) {
			return false;
		}
		if (cveTipoServicio == null) {
			if (other.cveTipoServicio != null) {
				return false;
			}
		} else if (!cveTipoServicio.equals(other.cveTipoServicio)) {
			return false;
		}
		if (exploraciones == null) {
			if (other.exploraciones != null) {
				return false;
			}
		} else if (!exploraciones.equals(other.exploraciones)) {
			return false;
		}
		if (fechaAtencion == null) {
			if (other.fechaAtencion != null) {
				return false;
			}
		} else if (!fechaAtencion.equals(other.fechaAtencion)) {
			return false;
		}
		if (indResultadoExploracionFisica == null) {
			if (other.indResultadoExploracionFisica != null) {
				return false;
			}
		} else if (!indResultadoExploracionFisica
				.equals(other.indResultadoExploracionFisica)) {
			return false;
		}
		if (medidas == null) {
			if (other.medidas != null) {
				return false;
			}
		} else if (!medidas.equals(other.medidas)) {
			return false;
		}
		if (nombre == null) {
			if (other.nombre != null) {
				return false;
			}
		} else if (!nombre.equals(other.nombre)) {
			return false;
		}
		if (numeroAplicacion == null) {
			if (other.numeroAplicacion != null) {
				return false;
			}
		} else if (!numeroAplicacion.equals(other.numeroAplicacion)) {
			return false;
		}
		if (numeroContrato == null) {
			if (other.numeroContrato != null) {
				return false;
			}
		} else if (!numeroContrato.equals(other.numeroContrato)) {
			return false;
		}
		if (rechazos == null) {
			if (other.rechazos != null) {
				return false;
			}
		} else if (!rechazos.equals(other.rechazos)) {
			return false;
		}
		if (refResultadoExploracionFisica == null) {
			if (other.refResultadoExploracionFisica != null) {
				return false;
			}
		} else if (!refResultadoExploracionFisica
				.equals(other.refResultadoExploracionFisica)) {
			return false;
		}
		if (stpTransaccion == null) {
			if (other.stpTransaccion != null) {
				return false;
			}
		} else if (!stpTransaccion.equals(other.stpTransaccion)) {
			return false;
		}
		return true;
	}
}